import { defineStore } from 'pinia'
import { createPersistedState } from 'pinia-plugin-persistedstate'
import type { Store } from 'pinia'

// 定义用户状态接口
interface UserState {
  token: string
  userInfo: any
}

// 導出 UserStore 類型
export type UserStore = ReturnType<typeof useUserStore>

// 创建用户状态存储
export const useUserStore = defineStore('user', {
  state: (): UserState => ({
    token: '',
    userInfo: null
  }),

  persist: true,
  
  actions: {
    // 设置token
    setToken(token: string) {
      this.token = token
    },
    
    // 设置用户信息
    setUserInfo(info: UserState['userInfo']) {
      this.userInfo = info
    },
    
    // 清除用户数据
    clearUserInfo() {
      this.token = ''
      this.userInfo = null
      uni.showToast({
        title: '退出登录成功',
        icon: 'none'
      })
      
      // 1秒后跳转到登录页
      setTimeout(() => {
        uni.reLaunch({
          url: '/pageSign/login'
        })
      }, 1000)
    },
    
    // 登录动作
    async login(params: { username: string, password: string, token: string }) {
      this.token = params.token // 或使用 API 返回的 token
      this.userInfo = { username: params.username }
    },
    
    // 登出动作
    logout() {
      this.token = ''
      this.userInfo = null
      uni.reLaunch({ url: '/pageSign/login' })
    }
  }
})

// 创建 Pinia 插件
export const piniaPluginPersistedstate = createPersistedState()
